#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>


int main(){
  umask(0);
 // close(0);//关闭了标准输入流stdin
  //close(1);//如果这里关闭了标准输出流stdout，那么文件符号表中的指针就不会指向stdout了，
  //然后后面open开始返回值就到了1的位置，那么指针1就会指向open创建的文件，这个特性就叫做重定向
  

  
 // int fd = open("log.txt",O_WRONLY | O_CREAT | O_TRUNC,0666);//输出重定向>
 // int fd = open("log.txt",O_WRONLY | O_CREAT | O_APPEND,0666);//追加重定向 >>
   int fd = open("log.txt",O_RDONLY); //输入重定向 < 输入到显示器上
  if(fd < 0){
    perror("open\n");
    return 1;
  }
  dup2(fd,0);//这里的意思是将不再使用键盘输入，而是使用fd的文件来输入

  char line[64];
  while(1){
    printf("> ");
    if(fgets(line,sizeof(line),stdin) == NULL) break;//这里是将stdin里面的内容，也就是log里面的数据
    //全部输入到line数组当中，如果遇到NULL就结束
    printf("%s",line);//现在的数据都在line里面了，直接打印就可以了
    
  }
  
  
  


 // printf("fd:%d\n",fd);
 // fprintf(stdout,"fd:%d\n",fd);
 // 
 // //向log中追加内容，这里利用的是重定向
 // const char* arr = "hello,linux\n";
 // write(1,arr,strlen(arr));
  

  fflush(stdout); // 强制刷新缓冲区
   

  close(fd);





  return 0;
}
